/**
 * Created by Administrator on 2017/2/28.
 * 处理静态资源
 */

const path = require("path");
const mime = require("mime");
const fs = require("mz/fs");

//url:类似'/static/'
//dir:类似__dirname + 'static'
const staticFiles = (url,dir)=>{'/static/', __dirname + '/static'
    return async (ctx,next)=>{
        let rpath = ctx.request.path;
        //判断指定以指定的url开头
        if(rpath.startsWith(url)){
            //获取文件完整路径
            let fp = path.join(dir,rpath.substring(url.length));
            //判断文件是否存在
            if(await fs.exists(fp)){
                //查找文件的mime{设定某种扩展名文件用一种程序来打开的方式类型}
                ctx.response.type = mime.lookup(rpath);
                // 读取文件内容并赋值给response.body:
                ctx.response.body = await fs.readFile(fp);
            }else{
                //文件不存在
                ctx.response.status = 404;
            }
        }else{
            //不是指定前缀
            await next();
        }
    }
}

module.exports = staticFiles;
